<?php
    /**
     * 学习下如何使用Db类操作数据库
     */
    namespace app\index\controller;

    use think\Db;
    class Exdb
    {
        public function index(){

        }

        // 下面使用原生
        public function insert(){
            // 插入数据
            $result = Db::execute('insert into think_data (id,name,status) values(4,"thinkphp",1)');
            dump($result);
        }

        // 更新
        public function update(){
            $result = Db::execute('update think_data set name="framework" where id=4');
            dump($result);
        }

        // 查询
        public function read(){
            $result = Db::query('select * from think_data');
            dump($result);
        }

        // 删除
        public function del(){
            $result = Db::execute('delete from think_data where id=4');
            dump($result);
        }

        // 显示数据库列表
        public function showtable()
        {
            $result = Db::query('show tables from think_data');
            dump($result);
        }

        // 清空数据表
        public function cleartable(){
            $result = Db::query('truncate table think_data');
            dump($result);
        }

        /** 查询构造器 */
        public function insert2()
        {
            Db::table('think_data')
                ->insert(['id'=>2,'name'=>'thinkphp','status'=>1]);
        }

        public function update2()
        {
            Db::table('think_data')
                ->where('id',2)
                ->update(['name'=>'hello']);
        }

        public function read2()
        {
            $list = Db::table('think_data')
                        ->field('name,status')
                        ->where('id',1)
                        ->select(); 
            dump($list);
        }

        public function del2()
        {
            Db::table('think_data')
                ->where('id',2)
                ->delete();
        }

        /** 数据表的前缀为think_，因此，table方法可以改成name方法 */
        public function insert3()
        {
            Db::name('data')
                ->insert(['id'=>2,'name'=>'php','status'=>1]);
        }
        public function update3()
        {
            Db::name('data')
                ->where('id',2)
                ->update(['status'=>0]);
        }
        public function read3()
        {
            $list = Db::name('data')
                ->field('name,status')
                ->select();
            dump($list);
        }
        public function del3()
        {
            Db::name('data')
                ->where('id',2)
                ->delete();
        }

        /** 如果使用系统提供的助手函数db则可以进一步简化 */
        public function insert4()
        {
            $db = db('data');
            $rs = $db->insert(['id'=>2,'name'=>'php','status'=>1]);
            dump($rs);
        }
        public function update4()
        {
            $db = db('data');
            $rs = $db->where('id',2)->update(['status'=>0]);
            dump($rs);
        }
        public function read4()
        {
            $db = db('data');
            $list = $db->select();
            dump($list);
        }
        public function del4()
        {
            $db = db('data');
            $rs = $db->where('id',2)->delete();
            dump($rs);
        }

        /** 链式操作 */
        public function read5()
        {
            // 查询2个满足条件的数据 并按照id倒序排列
            $list = Db::name('data')
                    ->where('status',1)
                    ->field('id,name,status')
                    ->order('id','desc')
                    ->limit(2)
                    ->select();
            dump($list);
        }

        public function readone()
        {
            // 查询一条数据
            $data = Db::name('data')
                    ->where('id',2)
                    ->find();
            dump($data);
        }

    }
?>